As is known in the art, many data systems have a plurality of clients that share a memory resource via a bus. At times, more than one of these clients may request access to the shared memory resource. Thus, a bus arbiter is provided to determine which client will be granted access to the memory resource via the bus. One typical algorithm, or criteria, used by the bus arbiter to resolve multiple requests for the memory resource is to grant access to the bus based on a first come-first served basis.
In executing some data processing requirement, a first client may retrieve data located at a particular shared memory location, process the retrieved data locally, and after processing such data store the processed data back into the shared memory resource at the same memory location. When any client wishes to process data located in the shared memory, the client requests access to the bus. After the client is granted access to the bus by the bus arbiter, it executes an address phase and an associated data phase on the bus, thus retrieving the shared data to a resource that is local to the client. Assume that another, i.e. second, client is later granted access to the bus by the bus arbiter. Assume also that this second client wishes to process data located at the same memory location while the first client is still locally processing the data it has retrieved from that memory location. As noted above, after being granted access to the bus by the bus arbiter, the second client initiates an address phase on the bus. The other clients on the bus monitor the address placed on the bus during the address phase by the client who was granted access to the bus. In this example, the first client detects that the address placed in the bus by the second client during the second client's address phase refers to data that is currently being processed locally by the first client. In response to the detected address, the first client induces an “address retry” (ARTRY) condition on the bus. In response to the ARTRY condition induced on the bus by the first client, the second client terminates its address phase and does not execute the associated data phase. Subsequent bus requests by the bus clients are resolved by the bus arbiter in accordance with certain predetermined criteria. Thus, the bus arbiter may next grant access to the bus to the first client or some other, i.e., a third client. This grant, however, was issued independently of whether any one of the clients had its address phase interrupted by an ARTRY condition being induced on the bus during the previous bus access. Thus, after the first client completes it's desired data processing, and the second client re-requests access to the bus, the bus arbiter will grant access to the bus in accordance with predetermined criteria, independent of whether a requesting client, here the second client, experienced an ARTRY condition during the address phases of its previous bus access. It should be noted that there might be a number of other clients wishing access to the bus. With such an arrangement, the bus arbiter is not sensitive to this ARTRY condition. The result of such insensitivity is that bus access latency is indeterminate for the second bus client due to the possibility of bus access being granted to other clients before the second client re-obtains access to the bus.